home *** CD-ROM | disk | FTP | other *** search
/ Delphi Magazine Collection 2001 / Delphi Magazine Collection 20001 (2001).iso / DISKS / Issue63 / Docking / DockedControls7U.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  2000-09-19  |  2.5 KB  |  97 lines

  1. unit DockedControls7U;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  7.   ComCtrls, ToolWin, StdCtrls, ImgList, ExtCtrls, ActnList, Menus;
  8.  
  9. type
  10.   TForm1 = class(TForm)
  11.     ImageList1: TImageList;
  12.     Label1: TLabel;
  13.     Panel1: TPanel;
  14.     Image1: TImage;
  15.     MainMenu1: TMainMenu;
  16.     ActionList1: TActionList;
  17.     actToggleToolbar: TAction;
  18.     Environment1: TMenuItem;
  19.     Toolbarvisible1: TMenuItem;
  20.     btnToggleFloat: TButton;
  21.     ToolBar1: TToolBar;
  22.     ToolButton6: TToolButton;
  23.     ToolButton7: TToolButton;
  24.     ToolButton8: TToolButton;
  25.     ToolButton9: TToolButton;
  26.     ToolButton10: TToolButton;
  27.     TopDockPanel: TPanel;
  28.     RightDockPanel: TPanel;
  29.     LeftDockPanel: TPanel;
  30.     BottomDockPanel: TPanel;
  31.     procedure FormCreate(Sender: TObject);
  32.     procedure actToggleToolbarExecute(Sender: TObject);
  33.     procedure actToggleToolbarUpdate(Sender: TObject);
  34.     procedure btnToggleFloatClick(Sender: TObject);
  35.     procedure DockPanelGetSiteInfo(Sender: TObject; DockClient: TControl;
  36.       var InfluenceRect: TRect; MousePos: TPoint; var CanDock: Boolean);
  37.     procedure DockPanelDockDrop(Sender: TObject;
  38.       Source: TDragDockObject; X, Y: Integer);
  39.   private
  40.     { Private declarations }
  41.   public
  42.     { Public declarations }
  43.   end;
  44.  
  45. var
  46.   Form1: TForm1;
  47.  
  48. implementation
  49.  
  50. {$R *.DFM}
  51.  
  52. uses
  53.   Math;
  54.  
  55. procedure TForm1.FormCreate(Sender: TObject);
  56. begin
  57.   Mouse.DragImmediate := False;
  58.   Image1.ManualDock(Panel1);
  59.   ToolBar1.ManualDock(TopDockPanel);
  60. end;
  61.  
  62. procedure TForm1.actToggleToolbarExecute(Sender: TObject);
  63. begin
  64.   ToolBar1.Visible := not (Sender as TAction).Checked
  65. end;
  66.  
  67. procedure TForm1.actToggleToolbarUpdate(Sender: TObject);
  68. begin
  69.   (Sender as TAction).Checked := ToolBar1.Visible
  70. end;
  71.  
  72. procedure TForm1.btnToggleFloatClick(Sender: TObject);
  73. begin
  74.   if ToolBar1.Floating then
  75.     ToolBar1.ManualDock(TopDockPanel)
  76.   else
  77.     //ToolBar1.ManualDock(nil)
  78.     ToolBar1.ManualFloat(
  79.       Rect(Left, Top, Left + ToolBar1.UndockWidth, Top + ToolBar1.UndockHeight))
  80. end;
  81.  
  82. procedure TForm1.DockPanelGetSiteInfo(Sender: TObject; DockClient: TControl;
  83.   var InfluenceRect: TRect; MousePos: TPoint; var CanDock: Boolean);
  84. begin
  85.   //Only accept toolbars
  86.   CanDock := DockClient is TToolBar
  87. end;
  88.  
  89. procedure TForm1.DockPanelDockDrop(Sender: TObject;
  90.   Source: TDragDockObject; X, Y: Integer);
  91. begin
  92.   //Get toolbar to reset its dimensions for docking
  93.   (Source.Control as TToolBar).Align := (Sender as TPanel).Align;
  94. end;
  95.  
  96. end.
  97.